package br.edu.unipampa.clube;

import br.edu.unipampa.campeonato.MercadoDeTransferencias;
import java.util.ArrayList;


public class Tecnico{
    
    private String nome;
    private Clube clubeQueDirige;
   
    public Tecnico(String nome){
        this.nome = nome;
        this.clubeQueDirige = null;
    }
    
    public void consultarMercado(MercadoDeTransferencias mercado){
        System.out.println("********************* MERCADO TRANSFERENCIA ************************");
        for (int i = 0; i < mercado.getJogadoresDisponiveis().size(); i++) {
            System.out.println(mercado.getJogadoresDisponiveis().get(i).getNome()+" - Força "
                    +mercado.getJogadoresDisponiveis().get(i).getForca());
        }
         System.out.println("*******************************************************************");
     }
    
    public boolean comprarJogador(MercadoDeTransferencias mercado, String nomeDoJogador){
         for (int i = 0; i < mercado.getJogadoresDisponiveis().size(); i++) {
             if (mercado.getJogadoresDisponiveis().get(i).getNome().equalsIgnoreCase(nomeDoJogador)) {
               if(clubeQueDirige.getDinheiroEmCaixa() >= mercado.getJogadoresDisponiveis().get(i).getPreco()){
                  clubeQueDirige.setDinheiroEmCaixa(clubeQueDirige.getDinheiroEmCaixa() - mercado.getJogadoresDisponiveis().get(i).getPreco());
                  clubeQueDirige.addListaDeJogadores(mercado.getJogadoresDisponiveis().get(i));
                   System.out.println("Transiçao realizada com sucesso!");
                 return true;  
               } else{
                   System.out.println("O clube não tem dinheiro suficiente para pagar o salario do jogador");
                   return false;
               }
             } 
         }
        System.out.println("Jogador inexistente ou não está a venda!");
        return false;
    }
    
    public boolean venderJogador(String nomeDoJogador, Clube clubeNovo){
        for (int i = 0; i < clubeQueDirige.getListaDeJogadores().size(); i++) {
            if(clubeQueDirige.getListaDeJogadores().get(i).getNome().equalsIgnoreCase(nomeDoJogador)){
                if(clubeNovo != clubeQueDirige) {
                   Jogador captura = clubeQueDirige.getListaDeJogadores().get(i);
                   clubeQueDirige.getListaDeJogadores().remove(captura);
                   clubeNovo.addListaDeJogadores(captura);
                   clubeQueDirige.setDinheiroEmCaixa(clubeQueDirige.getDinheiroEmCaixa() + clubeQueDirige.getListaDeJogadores().get(i).getPreco());
                   return true;
                }else{
                    System.out.println("Você nao pode vender o jogador para o clube que ele já pertence!");   
                   return false;
                }
            }
        }
        System.out.println("O jogador que você quer vender nao existe ou nao esta em seu clube");
        return false;
    }
    
    public void consultarJogadoresDoClube(Clube clube){
        System.out.println("************************************** Clube: "+clube.getNome()+" **************************************");
        for (int i = 0; i < clube.getListaDeJogadores().size(); i++) {
            System.out.println(clube.getListaDeJogadores().get(i).getNome()+" ---- Posição: "
                    +clube.getListaDeJogadores().get(i).getPosicao()+" -----  Força: "
                    +clube.getListaDeJogadores().get(i).getForca());
        }
         System.out.println("******************************************************************************************************");
    }
    
    public void consultarJogadoresDoClube(){
         for (int i = 0; i < clubeQueDirige.getListaDeJogadores().size(); i++) {
            System.out.println(clubeQueDirige.getListaDeJogadores().get(i).getNome()+" ***** Posição: "+clubeQueDirige.getListaDeJogadores().get(i).getPosicao());
        }       
    }

    public void escalarTime(){
        System.out.println("************ Time Titular ************");
        for (int i = 0; i < clubeQueDirige.getListaDeTitulares().size(); i++) {
            System.out.println(i+" - "+clubeQueDirige.getListaDeTitulares().get(i).getNome()
                    +" - Posição: "+clubeQueDirige.getListaDeTitulares().get(i).getPosicao()
                    +" - Força: "+clubeQueDirige.getListaDeTitulares().get(i).getForca()
                    +" - Ataque: "+clubeQueDirige.getListaDeTitulares().get(i).getAtaque()
                    +" - Defesa: "+clubeQueDirige.getListaDeTitulares().get(i).getDefesa());
        }
        System.out.println("\n************ Time Reserva ************");
        for (int i = 0; i < clubeQueDirige.getListaDeReservas().size(); i++) {
            System.out.println(i+" - "+clubeQueDirige.getListaDeReservas().get(i).getNome()
                    +" - Posição: "+clubeQueDirige.getListaDeReservas().get(i).getPosicao()
                    +" - Força: "+clubeQueDirige.getListaDeReservas().get(i).getForca()
                    +" - Ataque: "+clubeQueDirige.getListaDeReservas().get(i).getAtaque()
                    +" - Defesa: "+clubeQueDirige.getListaDeReservas().get(i).getDefesa());
        }
    }
    
    public void substituirNaEscalacao(int numTitular, int numReserva){
        Jogador jogadorTimeTitular = clubeQueDirige.getListaDeTitulares().get(numTitular);
        Jogador jogadorTimeReserva = clubeQueDirige.getListaDeReservas().get(numReserva);
        
        clubeQueDirige.getListaDeTitulares().remove(numTitular);
        clubeQueDirige.getListaDeReservas().remove(numReserva);
        
        clubeQueDirige.getListaDeTitulares().add(numTitular, jogadorTimeReserva);
        clubeQueDirige.getListaDeReservas().add(numReserva, jogadorTimeTitular);
        System.out.println("----------------- Foi Substituido o jogador '"+jogadorTimeTitular.getNome()
                +"' pelo jogador '"+jogadorTimeReserva.getNome()+"' -------------------");
    }
    public void definirSubstituicao(){
        System.out.println("************ Time em Campo ************");
        for (int i = 0; i < clubeQueDirige.getListaDeJogadoresTitularesDaPartida().size(); i++) {
            System.out.println(i+" - "+clubeQueDirige.getListaDeJogadoresTitularesDaPartida().get(i).getNome()
                    +" - Posição: "+clubeQueDirige.getListaDeJogadoresTitularesDaPartida().get(i).getPosicao()
                    +" - Força: "+clubeQueDirige.getListaDeJogadoresTitularesDaPartida().get(i).getForca());
        }
        System.out.println("\n************ Time Reserva ************");
        for (int i = 0; i < clubeQueDirige.getListaDeJogadoresReservaDaPartida().size(); i++) {
            System.out.println(i+" - "+clubeQueDirige.getListaDeJogadoresReservaDaPartida().get(i).getNome()
                    +" - Posição: "+clubeQueDirige.getListaDeJogadoresReservaDaPartida().get(i).getPosicao()
                    +" - Força: "+clubeQueDirige.getListaDeJogadoresReservaDaPartida().get(i).getForca());
        }
    }
    
    public void substituicaoNoTime(int numTitular, int numReserva){
        Jogador jogadorTimeTitular = clubeQueDirige.getListaDeTitulares().get(numTitular);
        Jogador jogadorTimeReserva = clubeQueDirige.getListaDeReservas().get(numReserva);
        
        clubeQueDirige.getListaDeJogadoresTitularesDaPartida().remove(numTitular);
        clubeQueDirige.getListaDeJogadoresReservaDaPartida().remove(numReserva);
        
        clubeQueDirige.getListaDeJogadoresTitularesDaPartida().add(numTitular, jogadorTimeReserva);
        clubeQueDirige.getListaDeReservas().add(numReserva, jogadorTimeTitular);
        System.out.println("----------------- Foi Substituido o jogador "+jogadorTimeTitular.getNome()
                +" pelo jogador -----------------"+jogadorTimeReserva.getNome());
    }

    public Clube getClubeQueDirige() {
        return clubeQueDirige;
    }

    public void setClubeQueDirige(Clube clubeQueDirige) {
        this.clubeQueDirige = clubeQueDirige;
    }
}
